auto.waitFor()

var 手机号 = ''

var 验证码请求地址 = ''

var 姓名 = ''

var 身份证号码 = ''

var 目前是否在使用备用用户 = false

var 实名认证待审核循环次数 = 0

var 实名认证失败循环次数 = 0

var 实名认证失败点击确定重新点击提交 = false

var 脚本停留时间 = 0

var 扫描二维码次数 = 0

var 获取用户信息次数 = 0

var 手机号是否已经登录 = false

var 线程超时计数 = 540000

var 线程A = threads.start(function () { })

var 线程B = threads.start(function () { })

var 获取用户信息FUN次数 = 0

var 当前页面 = ""

var 是否上号成功 = false

var 是否登录异常 = false

//设置超时为15秒
http.__okhttp__.setTimeout(90000)

// 后台接口开始

//1号位 在测
var 设备号 = 99
var 服务端请求地址 = ''

var 查询次数 = 0
// 用户选择了哪一个公司

var companyNameList = []

var companyIDList = []

var company = ''

var 是否重新获取验证码 = false
var 取IP地址 = 'http://scrap-library.yookelai.net'
var 异常备份服务端地址 = 'http://47.108.25.121'

var 俄罗斯订单ID = ""

var 俄罗斯号码主体 = ""


function 保存当前环境FUN(状态) {
   
    text('清理前设置').findOne().click()
    sleep(1000)
    var 是否选中 = text('备份当前环境').findOne().checked()
    if(状态==true){
        if(是否选中==false){
            text('备份当前环境').findOne().click()
        }
    }else{
        if(是否选中==true){
            text('备份当前环境').findOne().click()
        }
    }
    sleep(1000)
    click(0, 80)
}
function 获取服务器IPFUN() {
    try {
        var 获取公司数据 = http.get(取IP地址 + '/index/account/getIP',{
            headers: {
                'Connection': 'close'
            }
        })

        var 获取公司数据JSON = 获取公司数据.body.json()
        log(获取公司数据JSON)
        if (获取公司数据JSON.code == 200) {
            异常备份服务端地址 = 'http://' + 获取公司数据JSON.ip
        } else {
            log("获取IP信息失败")
            exit()
        }
    } catch (err) {
        log(err)
        // 获取设备IPFUN()
    }
}



function 获取设备IPFUN() {
    当前页面 = "获取设备IP"
    try {
        var 获取公司数据 = http.postJson(异常备份服务端地址 + '/index/account/informationOne', {
            'device': 设备号
        }, {
            headers: {
                'Connection': 'close'
            }
        })

        var 获取公司数据JSON = 获取公司数据.body.json()
        log(获取公司数据JSON)
        if (获取公司数据JSON.code == 200) {
            服务端请求地址 = 'http://' + 获取公司数据JSON.ip + ':18115'
        } else {
            log("获取IP信息失败")
            exit()
        }
    } catch (err) {
        log(err)
        // 获取设备IPFUN()
    }
}

var 验证码循环次数 = 0

var 俄罗斯验证码 = ""

function 获取公司数据FUN() {
    当前页面 = "获取公司数据"
    try {
        var 获取公司数据 = http.postJson(服务端请求地址 + '/getDeptList', {}, {
            headers: {
                'Connection': 'close'
            }
        })

        var 获取公司数据JSON = 获取公司数据.body.json()

        if (获取公司数据.statusCode == 200 && 获取公司数据JSON.statusCode == '0000') {

            companyNameList = 获取公司数据JSON.data.map(item => {
                return item.companyName
            })

            companyIDList = 获取公司数据JSON.data.map(item => {
                return item.companyId + ''
            })

        } else {

            toastLog('获取公司数据失败')

            exit()

        }
    } catch (err) {
        获取公司数据FUN()
    }
}

function 获取用户信息FUN() {



    当前页面 = "获取用户信息"

    try {

        var 获取用户信息 = http.get(异常备份服务端地址 + '/index/account/getmobile')

        var 获取用户信息JSON = 获取用户信息.body.json()
        log(获取用户信息JSON)
        if (获取用户信息JSON.code == 200) {

            // 成功
            手机号 = 获取用户信息JSON.mobile
            俄罗斯订单ID = 获取用户信息JSON.id
            俄罗斯号码主体 = 获取用户信息JSON.company_name
            获取用户信息次数 = 0
            log('手机号-' + 手机号)
            log('俄罗斯订单ID-' + 俄罗斯订单ID)

            if (!手机号) {
                log("没有手机号")
                主体FUN()
            }
        } else {
            log('接口响应异常，状态吗：' + 获取用户信息JSON.code)

            获取用户信息FUN()
        }
    } catch (err) {
        
        log("获取用户信息catch" + 获取用户信息FUN次数 + "次")
        sleep(1000)
        if (获取用户信息FUN次数 >= 3) {
            当前页面 = "获取用户信息catch";
            主体FUN()

        }
        获取用户信息FUN次数 = 获取用户信息FUN次数 + 1

        获取用户信息FUN()
    }
}

function 重新获取手机验证码() {
    click(0, 80)

    sleep(2000)

    click("下一步")
}

function 获取用户正面照FUN() {
    当前页面 = "获取用户正面照FUN"
    try {
        var 获取用户正面照 = http.postJson(服务端请求地址 + '/getIDCard', {
            'companyId': 选择的公司ID,
            'idNumber': 身份证号码,
            'type': '0'
        }, {
            headers: {
                'Connection': 'close'
            }
        })

        log(获取用户正面照)

        if (获取用户正面照.statusCode == 200) {

        } else {
            // 失败
            exit()
        }
    } catch (err) {
        获取用户正面照FUN()
    }
}

function 获取用户背面照FUN() {
    当前页面 = "获取用户背面照"
    try {
        var 获取用户背面照 = http.postJson(服务端请求地址 + '/getIDCard', {
            'companyId': 选择的公司ID,
            'idNumber': 身份证号码,
            'type': '1'
        }, {
            headers: {
                'Connection': 'close'
            }
        })

        log(获取用户背面照)

        if (获取用户背面照.statusCode == 200) {

        } else {
            // 失败
            当前页面 = "获取用户背面照失败"
            exit()
        }
    } catch (err) {
        获取用户背面照FUN()
    }
}

function 获取登录二维码FUN() {
    当前页面 = "获取登录二维码"
    try {
        var 获取登录二维码 = http.postJson(服务端请求地址 + '/getQRcode', {
            'companyId': 选择的公司ID
        }, {
            headers: {
                'Connection': 'close'
            }
        })

        log(获取登录二维码)

        if (获取登录二维码.statusCode == 200) {

            var 获取登录二维码JSON = 获取登录二维码.body.json()

            if (获取登录二维码JSON.statusCode == '0000') {

                log('获取登录二维码成功了')

            } else if (获取登录二维码JSON.statusCode == '9001') {

                toastLog('获取二维码超时，需重新获取二维码')

                获取登录二维码FUN()

            } else {

                log('获取二维码异常')
                当前页面 = "获取二维码异常"
                exit()

            }

        } else {
            // 失败
            exit()
        }
    } catch (err) {
        获取登录二维码FUN()
    }
}

function 获取备用身份证信息FUN() {
    try {
        var 获取备用身份证信息 = http.postJson(服务端请求地址 + '/getIDInfo', {}, {
            headers: {
                'Connection': 'close'
            }
        })

        log(获取备用身份证信息)

        var 获取备用身份证信息JSON = 获取备用身份证信息.body.json()

        if (获取备用身份证信息.statusCode == 200 && 获取备用身份证信息JSON.statusCode == '0000') {

            姓名 = 获取备用身份证信息JSON.data.userName

            身份证号码 = 获取备用身份证信息JSON.data.idCard

            目前是否在使用备用用户 = true

        } else {

            toastLog('获取备用身份证信息失败')
            当前页面 = "获取备用身份证信息失败"
            exit()

        }
    } catch (err) {
        获取备用身份证信息FUN()
    }
}

function 获取备用用户正面照FUN() {
    try {
        var 获取备用用户正面照 = http.postJson(服务端请求地址 + '/getIDCard', {
            'companyId': 'common',
            'idNumber': 身份证号码,
            'type': '0'
        }, {
            headers: {
                'Connection': 'close'
            }
        })

        log(获取备用用户正面照)

        if (获取备用用户正面照.statusCode == 200) {

        } else {
            // 失败
            exit()
        }
    } catch (err) {
        获取备用用户正面照FUN()
    }
}

function 查询是否上号成功FUN() {
    try {
        查询次数 = 查询次数 + 1
        var 备份电话信息 = http.postJson('https://im.yookelai.net/rest/gateway/api/user/getUserInfo', {
            'mobile': 手机号,
        }, {
            headers: {
                'Connection': 'close'
            }
        })

        var 备份电话信息JSON = 备份电话信息.body.json()

        log(备份电话信息JSON)

        var 验证状态 = 备份电话信息JSON.data.loginStatus

        if (验证状态 == 0) {
            查询次数 = 0
            是否上号成功 = true
             备份电话信息FUN(1, 1)
            log("数据库查询成功")
        } else {
            log("数据库查询失败")
            if (查询次数 < 4) {
                sleep(2000)
                查询是否上号成功FUN()
            } else {
                if (是否登录异常 == false) {
                    是否登录异常 = true
                    查询次数 = 0
                    sleep(1000)
                    获取登录二维码FUN()

                    sleep(1000)

                    //调用企微扫一扫
                    扫一扫FUN()
                }else{
                    是否上号成功 = false
                    备份电话信息FUN(1, 2)
                }
            }
        }
    } catch (err) {
        log("备份电话信息FUNcatch")
        查询是否上号成功FUN()
    }
}

// 后台接口结束

function 备份电话信息FUN(state, success) {
    try {
        var 备份电话信息 = http.postJson(异常备份服务端地址 + '/index/account/scrapAdd', {
            'mobile': 手机号,
            'url': 验证码请求地址,
            'company': 选择的公司名称,
            'name': 姓名,
            'card': 身份证号码,
            'remark': 设备号 + ":" + 当前页面,
            'success': success,
            'state': state
        }, {
            headers: {
                'Connection': 'close'
            }
        })

        var 备份电话信息JSON = 备份电话信息.body.json()

        log(备份电话信息JSON)

        if (备份电话信息.statusCode == 200 && 备份电话信息JSON.code == '200') {
        } else {
            // 失败
            log("备份信息失败")
        }
    } catch (err) {
        log("备份电话信息FUNcatch")
        主体FUN()
    }
}
function 号码移除主体FUN() {
    是否上号成功 = false;
    var 备份电话信息 = http.postJson(异常备份服务端地址 + '/index/account/mobileDel', {
        'id': 俄罗斯订单ID,
        'mobile': 手机号,
        'company_name': 俄罗斯号码主体
    }, {
        headers: {
            'Connection': 'close'
        }
    })
}

function 输入备用用户名和证件号FUN() {
    当前页面 = "输入备用用户名和证件号"
    // 设置用户名
    var 姓名输入框 = className("android.widget.EditText").depth("7").drawingOrder("3").indexInParent("2").findOne(3000)
    if (!姓名输入框) {
        var 姓名输入框 = bounds(330, 568, 1006, 627).findOne(1000)
    }

    姓名输入框.setText(姓名)

    sleep(1000)

    // 设置身份证号码
    var 身份证输入框 = className("android.widget.EditText").depth("7").drawingOrder("6").indexInParent("5").findOne(3000)
    if (!身份证输入框) {
        var 身份证输入框 = bounds(330, 765, 1006, 824).findOne(1000)
    }

    身份证输入框.setText(身份证号码)

}

function KILL应用进程(应用名) {

    var KILL进程应用包名 = getPackageName(应用名)

    shell('am force-stop ' + KILL进程应用包名, true)

    sleep(1000)

    log("结束" + 应用名 + "运行")
}

//这里会清理应用的所有数据和进程
function 清理应用进程所有(应用名) {

    var KILL进程应用包名 = getPackageName(应用名)

    shell('pm clear ' + KILL进程应用包名, true)

    sleep(1000)

    log("清理" + 应用名 + "所有数据和进程")
}

function 打开应用时异常捕获FUN() {

    var 企业微信没有响应 = textContains('企业微信没有响应').exists()
    if (企业微信没有响应) {
        var 企业微信没有响应等待 = textContains('等待').exists()
        if (企业微信没有响应等待) {
            click("等待")
        }
    }

    var 通知管理没有响应 = textContains('通知管理没有响应').exists()
    if (通知管理没有响应) {
        var 通知管理没有响应等待 = textContains('等待').exists()
        if (通知管理没有响应等待) {
            click("等待")
        }
    }
}

function 抹机王操作FUN() {
    当前页面 = "抹机王操作"
    //结束抹机回到首页
    toast("结束抹机王进程中")

    KILL应用进程("抹机王")

    sleep(1000)

    打开应用时异常捕获FUN()

    log("进入抹机王操作")

    launchApp("抹机王")

    log("抹机王应用名进入")
    
    text("抹机清理").waitFor()

    sleep(1000)

    if(是否上号成功==true){
        保存当前环境FUN(是否上号成功)
    }

    var 抹机清理 = text('抹机清理').findOne(3000)
    if (抹机清理) {
        var 抹机清理坐标 = 抹机清理.bounds()
        click(抹机清理坐标.centerX(), 抹机清理坐标.centerY())
    } else {
        bounds(33, 344, 1047, 422).click()
    }
    

    var 消息提示 = text("消息提示").findOne(1000)
    var 消息提示确定按钮 = text("确定").findOne(1000)

    if (消息提示 || 消息提示确定按钮) {
        click("确定")
        text("充值绑定").waitFor()

        var 绑定操作 = true
        while (绑定操作) {
            var 绑定本机 = text("绑定本机").findOne(1000)
            if (绑定本机) {
                绑定本机.click()
                sleep(2000)
                var 解绑 = text("解绑").findOne(1000)
                if (解绑) {
                    绑定操作 = false
                }
            } else {
                绑定操作 = false
            }
        }

        主体FUN()
    }

    text("任务结束-点击返回").waitFor()

    click("任务结束-点击返回")

    text("抹机清理").waitFor()

    if(是否上号成功==true){
        是否上号成功 = false
        保存当前环境FUN(是否上号成功)
    }

    log("抹机完成啦！")

    home()
}

function 打开企业微信FUN() {

    当前页面 = "打开企业微信"


    launchApp("企业微信")

    log('企业微信应用名进入')
}

function 设置企微相机权限为询问FUN() {

    当前页面 = "设置企微相机权限为询问"

    清理应用进程所有("设置")

    log("设置企微相机权限为询问，开始")

    var 企业微信应用包名 = getPackageName("企业微信")

    openAppSetting(企业微信应用包名)

    text("企业微信").waitFor()

    text("权限管理").waitFor()

    id('com.miui.securitycenter:id/am_detail_perm').findOne().click()

    sleep(1000)

    id("android:id/summary").depth(12).text("拍摄照片和录制视频").waitFor()

    // 开启相机
    text('拍摄照片和录制视频').findOne().parent().parent().click()

    sleep(1000)

    id('com.miui.securitycenter:id/dialog_permission_name').text('相机').waitFor()

    sleep(1000)

    //设置相机权限为询问
    id('com.miui.securitycenter:id/select_ask').depth('11').findOne().click()

    sleep(1000)

    back()

    text("企业微信").waitFor()

    home()

    log("设置企微相机权限为询问，结束返回首页")
}

function 设置企微相机权限为允许FUN() {

    当前页面 = "设置企微相机权限为允许"

    清理应用进程所有("设置")

    log("设置企微相机权限为允许，开始")

    var 企业微信应用包名 = getPackageName("企业微信")

    openAppSetting(企业微信应用包名)

    text("企业微信").waitFor()

    text("权限管理").waitFor()

    id('com.miui.securitycenter:id/am_detail_perm').findOne().click()

    sleep(1000)

    id("android:id/summary").depth(12).text("拍摄照片和录制视频").waitFor()

    // 开启相机
    text('拍摄照片和录制视频').findOne().parent().parent().click()

    sleep(1000)

    id('com.miui.securitycenter:id/dialog_permission_name').text('相机').waitFor()

    sleep(1000)

    //设置相机权限为允许
    id('com.miui.securitycenter:id/select_foreground').depth('11').findOne().click()

    sleep(1000)

    back()

    text("企业微信").waitFor()

    home()

    log("设置企微相机权限为允许，结束返回首页")

}

function 设置企微相机权限为拒绝FUN() {

    当前页面 = "设置企微相机权限为拒绝"

    清理应用进程所有("设置")

    log("设置企微相机权限为拒绝，开始")

    var 企业微信应用包名 = getPackageName("企业微信")

    openAppSetting(企业微信应用包名)

    text("企业微信").waitFor()

    text("权限管理").waitFor()

    id('com.miui.securitycenter:id/am_detail_perm').findOne().click()

    sleep(1000)

    id("android:id/summary").depth(12).text("拍摄照片和录制视频").waitFor()

    // 开启相机
    text('拍摄照片和录制视频').findOne().parent().parent().click()

    sleep(1000)

    id('com.miui.securitycenter:id/dialog_permission_name').text('相机').waitFor()

    sleep(1000)

    //设置相机权限为拒绝
    id('com.miui.securitycenter:id/select_deny').depth('11').findOne().click()

    sleep(1000)

    back()

    text("企业微信").waitFor()

    home()

    log("设置企微相机权限为拒绝，结束返回首页")
}

function 扫一扫FUN() {
    当前页面 = "扫一扫FUN"
    textContains("工作台").waitFor()

    // 开始微信的扫码登录
    // 点击右上角
    click(1008, 136)

    var 是否出现了扫一扫的图标 = textContains('扫一扫').findOne(3000)

    if (是否出现了扫一扫的图标) {

    } else {
        click(1008, 136)

        text('扫一扫').waitFor()
    }

    // 点击扫一扫
    textContains('扫一扫').findOne().parent().click()

    sleep(1000)

    textContains("企业微信登录确认").waitFor()
    log("企业微信登录确认OK")
    textContains("取消登录").waitFor()
    log("取消登录OK")
    var 重新扫码登录 = textContains("重新扫码登录").findOne(8000)
    log("重新扫码登录:" + 重新扫码登录)
    if (重新扫码登录) {
        log("重新扫码登录" + 重新扫码登录)
        //textContains('取消登录').click()
        click(419, 2068)

        sleep(1000)

        获取登录二维码FUN()

        sleep(1000)

        //调用企微扫一扫
        扫一扫FUN()

        扫描二维码次数 = 扫描二维码次数 + 1
    }

    //textContains('登录').click()
    click(265, 1927)

    sleep(4000)

    var 判断是否存在文件传输助手 = textContains('文件传输助手').findOne(8000)

    if (判断是否存在文件传输助手) {
        查询是否上号成功FUN()
        log('成功扫描登陆啦！')
    } else {
        //如果未存在 重新扫描 最多五次
        if (扫描二维码次数 <= 5) {

            var 判断是否存在文件传输助手1 = textContains('文件传输助手').findOne(2000)
            if (判断是否存在文件传输助手1) {
                查询是否上号成功FUN()
                log('成功扫描登陆啦！')
            } else {
                获取登录二维码FUN()

                sleep(1000)

                //调用企微扫一扫
                扫一扫FUN()

                扫描二维码次数 = 扫描二维码次数 + 1
            }
        } else {
            主体FUN()
        }
    }
}

function 登录获取验证码FUN() {

    当前页面 = "登录获取验证码FUN"

    // 初始化
    text('隐私保护指引').waitFor()

    //id('com.tencent.wework:id/cgo').text('同意').click()
    click('同意')

    // 首先判断用户协议是否勾选，如果已经勾选则直接进入下一步，反之亦然
    text("手机号登录").waitFor()

    click('手机号登录')
    //var 用户协议勾选框 = id('com.tencent.wework:id/mz').findOne()
    // var 用户协议勾选框 = className('android.widget.RelativeLayout').depth('7').findOne()

    // var 用户勾选协议状态 = 用户协议勾选框.selected()

    // log('用户是否勾选了用户协议-' + 用户勾选协议状态)

    // if (用户勾选协议状态 == false) {
    //     // 没有勾选则勾选即可
    //     用户协议勾选框.click()
    //     sleep(1000)
    // }

    //click('手机号登录')

    text("同意").waitFor()

    click('同意')

    // 当屏幕出现下一步按钮的时候进行操作
    textContains("下一步").waitFor()

    sleep(1000)

    // 先输入手机号
    setText(手机号)

    // 首先判断是否已经勾选了美国区号
    var 已选择区号 = bounds(66, 443, 154, 564).findOne().text()


    log(已选择区号)

    if (已选择区号 == '+7') {

    } else {
        // 去选择美国的区号
        textContains(已选择区号).findOne().parent().click()

        textContains("选择国家和地区").waitFor()

        sleep(2000)

        log("开始选择手机地区号")

        // 点击右上角的搜索图标
        var 区号搜索按钮 = className('android.widget.LinearLayout').depth('7').drawingOrder('4').indexInParent('2').findOne(2000)
        if (区号搜索按钮) {
            var 区号搜索按钮X = 区号搜索按钮.bounds().centerX()
            var 区号搜索按钮Y = 区号搜索按钮.bounds().centerY()
            click(区号搜索按钮X, 区号搜索按钮Y)
        } else {
            click(948, 80)
        }

        sleep(1000)

        // 输入美国
        setText('俄罗斯')

        sleep(2000)
        // 选择美国
        click("俄罗斯", 2)

    }

    sleep(1000)

    var 下一步到验证码 = text("下一步").findOne()
    if (下一步到验证码) {
        下一步到验证码.click()
    } else {
        sleep(1000)
        click('下一步')
    }

    text('请输入验证码').waitFor()

    sleep(3000)
}

function 获取验证码FUN() {

    try {
        var 获取用户信息 = http.get(异常备份服务端地址 + '/index/account/getSmsCode?id=' + 俄罗斯订单ID)
        log(异常备份服务端地址 + '/index/account/getSmsCode?id=' + 俄罗斯订单ID)

        var 获取用户信息JSON = 获取用户信息.body.json()
        log(获取用户信息JSON)
        if (获取用户信息JSON.code == 200) {
            验证码循环次数 = 0
            俄罗斯验证码 = 获取用户信息JSON.sms
        } else {
            if (验证码循环次数 >= 5) {
                验证码循环次数 = 0
                号码移除主体FUN()
                主体FUN()
            }
            验证码循环次数 = 验证码循环次数 + 1
            sleep(5000)
            获取验证码FUN()
        }
    } catch (err) {
        验证码循环次数 = 验证码循环次数 + 1
        获取验证码FUN()
    }



}

function 多主体选择FUN() {

    当前页面 = "多主体选择FUN"

    var 多主体主控件 = className("ListView").findOne(3000)

    sleep(3000)

    var 子控件列表 = 多主体主控件.children()

    var 最后一个控件下标 = 1
    子控件列表.forEach((item, position) => {
        最后一个控件下标 = position
    })
    if (最后一个控件下标 == 0) {
        最后一个控件下标 = 1
    }

    var 选择工作控件坐标 = 子控件列表[最后一个控件下标].bounds()

    click(选择工作控件坐标.centerX(), 选择工作控件坐标.centerY())
}

function 选择头像FUN() {

    当前页面 = "选择头像FUN"

    var 头像位置控件 = className('android.widget.ImageView').depth('7').drawingOrder('1').indexInParent('1').findOne(1000)
    if (!头像位置控件) {
        var 头像位置控件 = bounds(842, 287, 991, 436).findOne(1000)
    }

    //如果允许选择头像
    if (头像位置控件.clickable()) {

        log("开始上传头像")

        头像位置控件.click()

        sleep(2000)

        text("从相册中选取").waitFor()
        click("从相册中选取")
        /*从 Download 中选取 */
        //id("com.tencent.wework:id/evd").findOne().click()
        sleep(2000)
        click("所有图片")
        sleep(2000)

        //click("Download")
        textContains("Download").findOnce().parent().parent().parent().click()
        sleep(4000)

        var select = true
        var dep = 7
        var inpa = random(0, 15)
        //循环随机选出头像
        while (select) {
            var drwa = inpa + 1
            var view = className("android.widget.RelativeLayout").depth(dep).drawingOrder(drwa).indexInParent(inpa)

            if (view.exists()) {
                var 图像控件 = view.findOne()
                if (图像控件) {
                    var 图像控件坐标 = 图像控件.bounds()
                    //点击坐标
                    click(图像控件坐标.centerX(), 图像控件坐标.centerY())

                    var 选择使用 = text("使用").findOne(5000)
                    if (选择使用) {
                        select = false

                        //点击使用
                        选择使用.click()

                        toast("选好头像了")

                        break
                    } else {
                        continue
                    }
                }
            } else {
                inpa = random(0, 15)
            }
        }
    } else {
        //不选头像直接进入
    }

}

function 选择登录地区FUN() {
    当前页面 = "选择登录地区FUN"
    // 选择帐号所属的地区
    click(66, 480)

    textContains("选择国家和地区").waitFor()

    sleep(2000)

    log("开始选择登录地区中国")

    // 点击右上角的搜索图标
    var 国家搜索按钮 = className('android.widget.LinearLayout').depth('7').drawingOrder('4').indexInParent('2').findOne(2000)
    if (国家搜索按钮) {
        var 国家搜索按钮X = 国家搜索按钮.bounds().centerX()
        var 国家搜索按钮Y = 国家搜索按钮.bounds().centerY()
        click(国家搜索按钮X, 国家搜索按钮Y)
    } else {
        click(948, 80)
    }

    sleep(1000)

    // 输入中国
    setText("中国")

    sleep(2000)
    // 选择中国
    click("中国", 1)
}

function 验证码通过后续FUN() {
    当前页面 = "验证码通过后续FUN"
    var 是否已经选择过地区 = text('进入').findOne(3000)

    if (是否已经选择过地区) {

        选择头像FUN()

        //点击进入微信首页
        是否已经选择过地区.click()

        sleep(1000)

        var 登录中 = text("登录中").findOne(1000)
        if (!登录中) {
            click("进入")
        }

    } else {
        //未选择过地区，先进行选择

        // 判断是否需要设备验证
        var 是否需要设备验证 = textContains('你正在使用新设备登录企业微信').findOne(2000)
        var 其他设备验证 = text('其他设备验证').exists()
        var 同事辅助验证 = text('同事辅助验证').exists()
        var 帐号实名验证 = text('帐号实名验证').exists()

        if (是否需要设备验证 || 其他设备验证 || 同事辅助验证 || 帐号实名验证) {
            // 重头来过
            手机号是否已经登录 = true
            号码移除主体FUN()
            主体FUN()
        }
        sleep(2000)

        // 判断是否有存在多个主体选择
        var 选择工作身份 = textContains('选择工作身份').findOne(2000)
        if (选择工作身份) {

            多主体选择FUN()

            sleep(2000)
        } else {

            选择登录地区FUN()

            text("下一步").waitFor()
            sleep(1000)

            log("选择地区完毕，进入下一步")

            下一步按钮 = text("下一步").findOne(2000)
            if (下一步按钮.enabled()) {
                下一步按钮.click()
            } else {
                sleep(2000)
                下一步按钮.click()
            }

            sleep(3000)

            //判断是否注册企业微信
            var 注册企业微信 = text('注册企业微信').exists()
            if (注册企业微信) {
                //备份一次当前手机号
                //备份电话信息FUN()
                号码移除主体FUN()
                // 重头来过
                主体FUN()
            }

            textContains("腾讯企业微信软件许可及服务协议").waitFor()

            sleep(8000)

            var 同意服务协议 = text("同意").findOne(1000)
            if (同意服务协议) {
                if (同意服务协议.enabled()) {
                    click('同意')
                } else {
                    sleep(2000)
                    click('同意')
                }
            } else {
                sleep(2000)
                click('同意')
            }

            textContains("隐私政策").waitFor()

            sleep(8000)

            var 同意隐私政策 = text("同意").findOne(1000)
            if (同意隐私政策) {
                if (同意隐私政策.enabled()) {
                    click('同意')
                } else {
                    sleep(2000)
                    click('同意')
                }
            } else {
                sleep(2000)
                click('同意')
            }

            sleep(3000)

            //判断是否注册企业微信
            var 注册企业微信 = textContains('注册企业微信').findOne(5000)
            log("注册企业微信" + 注册企业微信)
            if (注册企业微信) {
                //备份一次当前手机号
                // 备份电话信息FUN(2, 3)
                // 重头来过
                主体FUN()
            }


            var 下一步 = textContains('下一步').findOne(5000)
            log("注册企业微信" + 下一步)
            if (下一步) {
                验证码通过后续FUN()
            }


            // 判断是否有存在多个主体选择
            var 选择工作身份 = textContains('选择工作身份').findOne(5000)
            if (选择工作身份) {
                多主体选择FUN()
            }

            sleep(2000)

        }

        var 是否选择头像界面 = text('进入').findOne(3000)

        if (是否选择头像界面) {

            选择头像FUN()

            sleep(2000)

            // 登录进入
            var 登录进入按钮 = text('进入').findOne(3000)
            if (登录进入按钮) {
                登录进入按钮.click()
            } else {
                click("进入")
            }

            sleep(1000)

            var 登录中 = text("登录中").findOne(1000)
            if (!登录中) {
                click("进入")
            }

        } else {
            sleep(1000)

            //返回输入验证码页面
            back()

            sleep(1000)

            textContains('获取验证码').waitFor()

            sleep(41000)

            click("获取验证码")

            sleep(3000)

            获取验证码FUN()

            var 手机号验证码真实值 = 俄罗斯验证码

            //如果验证码是空或者验证码是不是数字 就重来
            if (!手机号验证码真实值 || isNaN(手机号验证码真实值)) {

                //备份一次当前手机号
                // 备份电话信息FUN()
                号码移除主体FUN()
                // 重头来过
                主体FUN()
            }

            setText(手机号验证码真实值)

            sleep(1000)

            click('下一步')

            sleep(3000)

            //判断是否注册企业微信
            var 注册企业微信 = textContains('注册企业微信').findOne(5000)
            log("注册企业微信" + 注册企业微信)
            if (注册企业微信) {
                //备份一次当前手机号
                号码移除主体FUN()
                // 重头来过
                主体FUN()
            }

            // 检查是否弹窗报错
            var 验证码报错弹窗 = text("确定").exists()

            if (验证码报错弹窗) {
                click('确定')

                sleep(1000)

                //备份一次当前手机号
                // 备份电话信息FUN()
                号码移除主体FUN()
                // 重头来过
                主体FUN()

            }

            sleep(1000)

            验证码通过后续FUN()
        }
    }

}

function 活体检测操作前FUN() {

    当前页面 = "活体检测操作前FUN"

    //设置企微相机权限为询问FUN()
    设置企微相机权限为拒绝FUN()


    sleep(1000)

    打开企业微信FUN()

    // 等待首页加载完成
    textContains("工作台").waitFor()

    手机号是否已经登录 = true

    var 个人设置 = className('android.widget.RelativeLayout').depth('11').findOne()
    var 个人设置X = 个人设置.bounds().centerX()
    var 个人设置Y = 个人设置.bounds().centerY()
    click(个人设置X, 个人设置Y)

    sleep(1000)

    // 等待帮助按钮的出现
    textContains("加入其他企业").waitFor()

    // 点击个人头像按钮
    //id('com.tencent.wework:id/lig').depth('9').findOne().click()
    click(55, 154)

    sleep(1000)

    textContains("红包").waitFor()

    sleep(1000)

    // 继续点击头像
    //id('com.tencent.wework:id/k1j').depth('13').findOne().click()
    click(831, 303)

    textContains("对外信息显示").waitFor()

    sleep(1000)

    // 点击姓名
    //id('com.tencent.wework:id/gtf').depth('11').findOne().click()
    textContains("对外信息显示").findOne().parent().click()
    sleep(1000)
    textContains("名字显示").findOne(2000).parent().parent().parent().click()
    sleep(1000)
    textContains("别名").findOne(2000).parent().click()
}

function 获取用户身份证FUN() {
    当前页面 = "获取用户身份证FUN"
    try {
        var 获取备用身份证信息 = http.postJson(服务端请求地址 + '/getIDInfo', {}, {
            headers: {
                'Connection': 'close'
            }
        })

        log(获取备用身份证信息)

        var 获取备用身份证信息JSON = 获取备用身份证信息.body.json()

        if (获取备用身份证信息.statusCode == 200 && 获取备用身份证信息JSON.statusCode == '0000') {

            姓名 = 获取备用身份证信息JSON.data.userName

            身份证号码 = 获取备用身份证信息JSON.data.idCard

            目前是否在使用备用用户 = true

        } else {

            toastLog('获取备用身份证信息失败')
            号码移除主体FUN()

            exit()

        }
    } catch (err) {
        获取用户身份证FUN()
    }
}


function 活体检测操作中FUN() {
    当前页面 = "活体检测操作中FUN"

    // 点击实名认证
    textContains("实名认证").findOne().parent().parent().parent().parent().click()
    // 输入姓名
    textContains("填写真实姓名").waitFor()

    sleep(1000)
    setText(姓名)
    sleep(1000)

    //点击认证
    click('认证')

    textContains("需提交姓名、身份证号以确定实名信息").waitFor()

    // 输入身份证号码
    textContains("请输入身份证号").setText(身份证号码)

    sleep(1000)

    // 同意并下一步
    var 同意下一步循环次数 = 0
    while (同意下一步循环次数 < 5) {
        var 同意并下一步按钮 = text('同意并下一步').findOne(3000)
        if (同意并下一步按钮) {
            同意并下一步按钮.click()
            break
        } else {
            同意下一步循环次数++
            continue
        }
    }

    log("同意并下一步")

    // 检测姓名和身份证号是否一致
    var 是否出现了实名认证不一致的情况 = text("确定").findOne(3000)

    if (是否出现了实名认证不一致的情况) {

        // 点击确定按钮，再来一遍
        click('确定')

        实名身份证未通过重新来FUN()
    } else {
        // 勾选人脸识别协议
        textContains("将通过人脸识别验证你的身份信息，请确保是本人操作").waitFor()

        // 同意人脸识别的协议
        textContains("我已阅读并同意《人脸识别身份验证规则》，且知晓以上信息仅用于实名验证，企业微信不会保存我的人脸信息。").findOne().parent().child(0).click()

        sleep(1000)

        click('下一步')

        sleep(1000)

        text("开始").waitFor()

        sleep(1000)

        click("开始")

        log("我点了开始了_0")
    }

}

function 拍照操作FUN() {
    当前页面 = "拍照操作FUN"
    // 调用后台接口获取身份证正面照开始
    // 判断是否需要使用备用照片
    if (目前是否在使用备用用户) {
        获取备用用户正面照FUN()
        目前是否在使用备用用户 = false
    } else {
        获取备用用户正面照FUN()
    }
    // 调用后台接口获取身份证正面照结束

    sleep(1000)

    // 拍正面照
    click(192, 1345)

    text("取消").waitFor()

    sleep(1000)
    // 点击聚焦
    click(480, 807)

    // 点击拍照
    sleep(5000)
    click(485, 2038)
    sleep(1000)
    click(485, 2038)
    log("点击拍摄正面照")

    textContains('人脸实名认证失败').waitFor()

    // 调用后台接口获取身份证背面照开始
    获取用户背面照FUN()

    sleep(1000)

    // 拍反面照
    click(646, 1345)

    text("取消").waitFor()

    sleep(1000)

    // 点击聚焦
    click(480, 807)

    // 点击拍照
    sleep(5000)
    click(485, 2038)
    sleep(1000)
    click(485, 2038)
    log("点击拍摄背面照")

    textContains('人脸实名认证失败').waitFor()

}

function 拍照提交FUN() {
    当前页面 = "拍照提交FUN"
    // 等待提交按钮出现 然后点击
    textContains("提交").waitFor()

    var 提交按钮 = text("提交").findOne(5000)
    if (提交按钮.enabled()) {
        click('提交')
        log("我拍照提交了")
    } else {
        sleep(4000)
        var 提交按钮2 = text("提交").findOne(1000)
        if (提交按钮2.enabled()) {
            click('提交')
            log("我拍照提交了2")
        } else {
            实名认证失败重新来过FUN()
        }
    }
}

function 提交身份证照片FUN() {
    当前页面 = "提交身份证照片FUN"
    textContains('人脸实名认证失败').waitFor()

    log("来到提交身份证验证页面")

    home()

    sleep(1000)

    // 打开企微的权限设置
    设置企微相机权限为允许FUN()

    sleep(1000)

    // 重新打开微信
    打开企业微信FUN()

    textContains('人脸实名认证失败').waitFor()

    sleep(1000)

    拍照操作FUN()

    sleep(6000)

    拍照提交FUN()

    sleep(1000)

}

function 认证成功FUN() {
    当前页面 = "认证成功FUN"
    // 认证完之后，重新回到首页
    textContains("港澳台及海外用户认证").waitFor()


    //id('com.tencent.wework:id/gtf').findOne(2000)

    // var 身份认证AUTH = id('com.tencent.wework:id/gtf').depth('6').findOne()
    // var 身份认证AUTHX = 身份认证AUTH.bounds().centerX()
    // var 身份认证AUTHY = 身份认证AUTH.bounds().centerY()
    // click(身份认证AUTHX, 身份认证AUTHY)

    //var 完成认证 = id('com.tencent.wework:id/bvd').findOne(3000)

    var 我知道了 = textContains('我知道了').findOne(2000)
    log("我知道了" + 我知道了)
    if (我知道了) {
        //备份一次当前手机号
        // 备份电话信息FUN(1, 2)
        // 重头来过
        主体FUN()
    }

    sleep(2000)


}

function 实名未提交重新来过FUN() {
    当前页面 = "实名未提交重新来过FUN"
    if (实名认证失败循环次数 >= 5) {
        // 重头来过
        号码移除主体FUN()
        主体FUN()
    } else {

        back()

        sleep(1000)

        设置企微相机权限为拒绝FUN()

        sleep(1000)

        // 打开企业微信
        打开企业微信FUN()

        textContains("需提交姓名、身份证号以确定实名信息").waitFor()

        sleep(1000)

        // 同意并下一步
        var 同意下一步循环次数 = 0
        while (同意下一步循环次数 < 5) {
            var 同意并下一步按钮 = text('同意并下一步').findOne(3000)
            if (同意并下一步按钮) {
                同意并下一步按钮.click()
                break
            } else {
                同意下一步循环次数++
                continue
            }
        }

        // 检测姓名和身份证号是否一致
        var 是否出现了实名认证不一致的情况 = text("确定").findOne(3000)

        if (是否出现了实名认证不一致的情况) {

            // 点击确定按钮，再来一遍
            click('确定')

            实名身份证未通过重新来FUN()

        } else {
            // 勾选人脸识别协议
            textContains("将通过人脸识别验证你的身份信息，请确保是本人操作").waitFor()

            // 同意人脸识别的协议
            textContains("我已阅读并同意《人脸识别身份验证规则》，且知晓以上信息仅用于实名验证，企业微信不会保存我的人脸信息。").findOne().parent().child(0).click()

            sleep(1000)
            var 下一步按钮 = text("下一步").findOne(2000)
            if (下一步按钮.enabled()) {
                下一步按钮.click()
            } else {
                // 同意人脸识别的协议
                textContains("我已阅读并同意《人脸识别身份验证规则》，且知晓以上信息仅用于实名验证，企业微信不会保存我的人脸信息。").findOne().parent().child(0).click()
                sleep(2000)
                下一步按钮.click()
            }

            sleep(1000)

            text("开始").waitFor()

            sleep(1000)

            click("开始")

            log("我点了开始了重新来1")

            sleep(3000)

            提交身份证照片之后判断用户是否实名认证成功FUN()
        }

    }
}

function 实名认证失败重新来过FUN() {
    当前页面 = "实名认证失败重新来过FUN"
    if (实名认证失败循环次数 >= 5) {
        // 重头来过
        号码移除主体FUN()
        主体FUN()
    } else {

        sleep(2000)

        back()

        sleep(1000)

        设置企微相机权限为拒绝FUN()

        sleep(1000)

        // 打开企业微信
        打开企业微信FUN()

        // 重新输入名称和身份证号码
        // 重新调用获取身份证信息
        textContains("需提交姓名、身份证号以确定实名信息").waitFor()

        获取备用身份证信息FUN()

        输入备用用户名和证件号FUN()

        sleep(2000)

        // 同意并下一步
        var 同意下一步循环次数 = 0
        while (同意下一步循环次数 < 5) {
            var 同意并下一步按钮 = text('同意并下一步').findOne(3000)
            if (同意并下一步按钮) {
                同意并下一步按钮.click()
                break
            } else {
                同意下一步循环次数++
                continue
            }
        }

        // 检测姓名和身份证号是否一致
        var 是否出现了实名认证不一致的情况 = text("确定").findOne(3000)

        if (是否出现了实名认证不一致的情况) {

            // 点击确定按钮，再来一遍
            click('确定')

            实名身份证未通过重新来FUN()

        } else {
            // 勾选人脸识别协议
            textContains("将通过人脸识别验证你的身份信息，请确保是本人操作").waitFor()

            // 同意人脸识别的协议
            textContains("我已阅读并同意《人脸识别身份验证规则》，且知晓以上信息仅用于实名验证，企业微信不会保存我的人脸信息。").findOne().parent().child(0).click()

            sleep(1000)
            var 下一步按钮 = text("下一步").findOne(2000)
            if (下一步按钮.enabled()) {
                下一步按钮.click()
            } else {
                // 同意人脸识别的协议
                textContains("我已阅读并同意《人脸识别身份验证规则》，且知晓以上信息仅用于实名验证，企业微信不会保存我的人脸信息。").findOne().parent().child(0).click()
                sleep(2000)
                下一步按钮.click()
            }

            sleep(1000)

            text("开始").waitFor()

            sleep(1000)

            click("开始")

            log("我点了开始了_2")

            sleep(3000)

            提交身份证照片之后判断用户是否实名认证成功FUN()
        }

    }

}

function 实名身份证未通过重新来FUN() {

    当前页面 = "实名身份证未通过重新来FUN"

    if (实名认证失败循环次数 >= 5) {
        // 重头来过
        号码移除主体FUN()
        主体FUN()

    } else {

        textContains("需提交姓名、身份证号以确定实名信息").waitFor()

        获取备用身份证信息FUN()

        输入备用用户名和证件号FUN()

        sleep(1000)

        // 同意并下一步
        var 同意下一步循环次数 = 0
        while (同意下一步循环次数 < 5) {
            var 同意并下一步按钮 = text('同意并下一步').findOne(3000)
            if (同意并下一步按钮) {
                同意并下一步按钮.click()
                break
            } else {
                同意下一步循环次数++
                continue
            }
        }

        sleep(2000)

        // 检测姓名和身份证号是否一致
        var 是否出现了实名认证不一致的情况 = text("确定").findOne(3000)

        if (是否出现了实名认证不一致的情况) {

            // 点击确定按钮，再来一遍，重新换个身份证
            click('确定')

            实名身份证未通过重新来FUN()

        } else {
            // 勾选人脸识别协议
            textContains("将通过人脸识别验证你的身份信息，请确保是本人操作").waitFor()

            // 同意人脸识别的协议
            textContains("我已阅读并同意《人脸识别身份验证规则》，且知晓以上信息仅用于实名验证，企业微信不会保存我的人脸信息。").findOne().parent().child(0).click()

            sleep(1000)
            var 下一步按钮 = text("下一步").findOne(2000)
            if (下一步按钮.enabled()) {
                下一步按钮.click()
            } else {
                // 同意人脸识别的协议
                textContains("我已阅读并同意《人脸识别身份验证规则》，且知晓以上信息仅用于实名验证，企业微信不会保存我的人脸信息。").findOne().parent().child(0).click()
                sleep(2000)
                下一步按钮.click()
            }

            sleep(1000)

            text("开始").waitFor()

            sleep(1000)

            click("开始")

            log("我点了开始了_3")

            sleep(3000)

            提交身份证照片之后判断用户是否实名认证成功FUN()
        }

    }
}

function 实名需要审核重新来过FUN() {
    当前页面 = "实名需要审核重新来过FUN"
    if (实名认证待审核循环次数 >= 3) {
        // 重头来过
        号码移除主体FUN()
        主体FUN()

    } else {

        //点击撤销
        //bounds(898, 80, 1080, 212).click()
        // var 撤销 = className('android.widget.LinearLayout').depth('7').findOne(4000)
        // var 撤销X = 撤销.bounds().centerX()
        // var 撤销Y = 撤销.bounds().centerY()

        //click(撤销X, 撤销Y)
        back()

        sleep(1000)

        设置企微相机权限为拒绝FUN()

        sleep(1000)
        // 打开企业微信
        打开企业微信FUN()

        // 等待企业微信重新打开
        textContains("需提交姓名、身份证号以确定实名信息").waitFor()

        sleep(2000)

        // 同意并下一步
        var 同意下一步循环次数 = 0
        while (同意下一步循环次数 < 5) {
            var 同意并下一步按钮 = text('同意并下一步').findOne(3000)
            if (同意并下一步按钮) {
                同意并下一步按钮.click()
                break
            } else {
                同意下一步循环次数++
                continue
            }
        }

        sleep(2000)

        // 检测姓名和身份证号是否一致
        var 是否出现了实名认证不一致的情况 = text("确定").findOne(3000)

        if (是否出现了实名认证不一致的情况) {

            // 点击确定按钮，再来一遍
            click('确定')

            实名身份证未通过重新来FUN()

        } else {
            // 勾选人脸识别协议
            textContains("将通过人脸识别验证你的身份信息，请确保是本人操作").waitFor()

            // 同意人脸识别的协议
            textContains("我已阅读并同意《人脸识别身份验证规则》，且知晓以上信息仅用于实名验证，企业微信不会保存我的人脸信息。").findOne().parent().child(0).click()

            sleep(1000)
            var 下一步按钮 = text("下一步").findOne(2000)
            if (下一步按钮.enabled()) {
                下一步按钮.click()
            } else {
                // 同意人脸识别的协议
                textContains("我已阅读并同意《人脸识别身份验证规则》，且知晓以上信息仅用于实名验证，企业微信不会保存我的人脸信息。").findOne().parent().child(0).click()
                sleep(2000)
                下一步按钮.click()
            }

            sleep(1000)

            text("开始").waitFor()

            sleep(1000)

            click("开始")

            log("我点了开始了_4")

            sleep(3000)

            提交身份证照片之后判断用户是否实名认证成功FUN()
        }
    }

}

function 提交身份证照片之后判断用户是否实名认证成功FUN() {
    当前页面 = "提交身份证照片之后判断用户是否实名认证成功FUN"
    // 提交身份证照片
    提交身份证照片FUN()

    sleep(5000)

    判断是否实名认证成功FUN()
}

function 判断是否实名认证成功FUN() {
    当前页面 = "判断是否实名认证成功FUN"
    sleep(1000)

    log("开始判断是否认证成功")

    // 实名认证待审核
    var 实名认证待审核 = text("个人资料已提交审核").exists()
    var 实名认证待审核撤销 = text("撤销").exists()

    // 认证成功，但是在身份证号码页面
    var 实名成功但处于身份证页面 = text("需提交姓名、身份证号以确定实名信息").exists()

    // 实名认证失败弹窗
    var 实名认证失败ERR = text("实名认证失败").exists()
    var 实名认证失败确定按钮 = text("确定").exists()

    if (实名认证失败ERR && 实名认证失败确定按钮) {
        // 实名认证失败
        log('实名认证失败页面_1')

        sleep(4000)

        text('确定').click()

        if (!实名认证失败点击确定重新点击提交) {
            // 等待提交按钮出现 然后点击
            textContains("提交").waitFor()
            sleep(1000)
            click('提交')

            实名认证失败点击确定重新点击提交 = true

            sleep(4000)

            判断是否实名认证成功FUN()
        } else {
            实名认证失败循环次数 = 实名认证失败循环次数 + 1

            sleep(1000)

            实名认证失败重新来过FUN()
        }

    } else if (实名认证待审核 || 实名认证待审核撤销) {
        log('实名认证待审核页面_1')

        实名认证待审核循环次数 = 实名认证待审核循环次数 + 1

        实名需要审核重新来过FUN()
    } else if (实名成功但处于身份证页面) {
        log('实名成功但处于身份证页面_1')
        实名认证成功后续FUN()
    } else {

        sleep(2000)

        // 认证成功，但是在身份证号码页面
        var 实名成功但处于身份证页面_1 = text("需提交姓名、身份证号以确定实名信息").exists()
        //提交没有点击的异常处理或者上面异常没有捕获到的处理
        //没有点提交或者拍照不成功
        var 人脸实名认证失败ERR_2 = textContains("人脸实名认证失败").exists()

        //实名认证失败，没有捕获到确定
        var 实名认证失败ERR_2 = text("实名认证失败").exists()
        // 个人资料审核 没有捕获到页面
        var 实名认证待审核_2 = text("个人资料已提交审核").exists()
        var 实名认证待审核撤销_2 = text("撤销").exists()

        if (实名成功但处于身份证页面_1) {
            log('实名成功但处于身份证页面_2')
            实名认证成功后续FUN()
        } else if (实名认证失败ERR_2 || 人脸实名认证失败ERR_2) {

            var 人脸实名认证失败上传提示ERR_2 = text("上传身份证照片").exists()
            var 实名认证失败确定按钮ERR_2 = text("确定").exists()

            if (人脸实名认证失败上传提示ERR_2) {
                log('实名认证失败页面_2')
                实名认证失败循环次数 = 实名认证失败循环次数 + 1
                实名认证失败重新来过FUN()
            } else if (实名认证失败确定按钮ERR_2) {
                log('实名认证失败页面_3')

                text('确定').click()

                sleep(1000)

                if (!实名认证失败点击确定重新点击提交) {
                    // 等待提交按钮出现 然后点击
                    textContains("提交").waitFor()
                    sleep(1000)
                    click('提交')

                    实名认证失败点击确定重新点击提交 = true

                    sleep(4000)

                    判断是否实名认证成功FUN()
                } else {
                    实名认证失败循环次数 = 实名认证失败循环次数 + 1
                    实名认证失败重新来过FUN()
                }
            } else {
                log('实名认证成功页面_3')
                实名认证成功后续FUN()
            }

        } else if (实名认证待审核_2 || 实名认证待审核撤销_2) {

            log('实名认证待审核页面_2')

            实名认证待审核循环次数 = 实名认证待审核循环次数 + 1
            实名需要审核重新来过FUN()
        } else {
            log('实名认证成功页面_2')
            实名认证成功后续FUN()
        }
    }
}

function 实名认证成功后续FUN() {
    当前页面 = "实名认证成功后续FUN"

    var 我知道了 = textContains('我知道了').findOne(2000)
    log("我知道了" + 我知道了)
    if (我知道了) {
        //备份一次当前手机号
        // 备份电话信息FUN(1, 2)
        // 重头来过
        主体FUN()
    }

    // 实名成功
    认证成功FUN()

    //继续下一个
    主体FUN()
}




// 开始执行main方法
function 核心递归FUN() {

    // 判断守护线程是否开启
    if (线程B.isAlive()) {
        线程B.interrupt()
    }

    守护线程FUN()

    home()

    打开应用时异常捕获FUN()

    抹机王操作FUN()

    sleep(1000)

    设置企微相机权限为允许FUN()

    重置参数FUN()

    sleep(1000)

    打开企业微信FUN()

    sleep(1000)

    获取用户信息FUN()

    sleep(1000)

    // 登录获取验证码
    登录获取验证码FUN()

    获取验证码FUN()

    log(俄罗斯验证码)

    var 手机号验证码真实值 = 俄罗斯验证码

    //如果验证码是空或者验证码是不是数字 就重来
    if (!手机号验证码真实值 || isNaN(手机号验证码真实值)) {

        //备份一次当前手机号
        // 备份电话信息FUN()
        号码移除主体FUN()
        // 重头来过
        主体FUN()
    }

    setText(手机号验证码真实值)

    sleep(1000)

    click('下一步')

    sleep(3000)

    //判断是否注册企业微信
    var 注册企业微信 = textContains('注册企业微信').findOne(5000)
    log("注册企业微信" + 注册企业微信)
    if (注册企业微信) {
        //备份一次当前手机号
        // 备份电话信息FUN(2, 3)
        // 重头来过
        主体FUN()
    }




    // 检查是否弹窗报错
    var 帐号封禁提示 = text("查看详情").exists()
    var 帐号封禁提示2 = text("我知道了").exists()
    if (帐号封禁提示 || 帐号封禁提示2) {
        click("我知道了")

        sleep(1000)

        // 重头来过
        手机号是否已经登录 = true
        号码移除主体FUN()
        主体FUN()
    }

    var 验证码报错弹窗 = text("确定").findOne(2000)
    if (验证码报错弹窗) {
        click('确定')

        sleep(1000)

        //备份一次当前手机号
        // 备份电话信息FUN()
        号码移除主体FUN()
        // 重头来过
        主体FUN()
    }

    sleep(1000)

    验证码通过后续FUN()

    sleep(2000)

    //判断主体被封
    var 企业帐号封禁提示 = textContains('企业帐号封禁提示').findOne(5000)
    if (企业帐号封禁提示) {
        //放弃该帐号，重新跑
        手机号是否已经登录 = true
        号码移除主体FUN()
        主体FUN()
    }

    //进入到企业微信首页
    log("进入到首页了")

    // 开始扫一扫
    获取登录二维码FUN()

    // 调用企微扫一扫
    扫一扫FUN()

    活体检测操作前FUN()

    sleep(2000)

    // 检测是否完成了实名认证
    var 是否完成了实名认证 = textContains('去认证').findOne(5000)

    log("用户是否实名验证:" + 是否完成了实名认证)

    if (是否完成了实名认证) {

        textContains("去认证").findOne(2000).click()

        获取用户身份证FUN()

        活体检测操作中FUN()

        sleep(4000)

        // 提交身份证照片之后判断用户是否实名认证成功
        提交身份证照片之后判断用户是否实名认证成功FUN()

    } else {
        // 表示实名过。继续下一个
        手机号是否已经登录 = true
        号码移除主体FUN()
        主体FUN()
    }
}

function 重置参数FUN() {
    手机号是否已经登录 = false
    手机号 = ''
    验证码请求地址 = ''
    姓名 = ''
    身份证号码 = ''
    目前是否在使用备用用户 = false
    实名认证待审核循环次数 = 0
    实名认证失败循环次数 = 0
    实名认证失败点击确定重新点击提交 = false
    扫描二维码次数 = 0
    获取用户信息FUN次数 = 0
    查询次数 = 0
    验证码循环次数 = 0
}

function 程序线程FUN() {
    线程A = threads.start(function () {
        log('进入程序主线程')
        核心递归FUN()
    })
}

function 守护线程FUN() {
    线程B = threads.start(function () {
        log('守护线程开启')
        setTimeout(function () {
            log('太久啦，我要重新开始了')
            //中断程序线程
            线程A.interrupt()
            //如果手机未登录成功过
            if (!手机号是否已经登录) {
                if (手机号) {
                    //备份手机号
                    // 备份电话信息FUN()
                    号码移除主体FUN()
                }
            }
            是否上号成功 = false;
            // 重头来过
            主体FUN()
        }, 线程超时计数)
    })
}

function 主体FUN() {
    // 判断程序线程是否开启
    if (线程A.isAlive()) {
        线程A.interrupt()
    }

    程序线程FUN()
}

//开始执行
获取服务器IPFUN()

sleep(1000)

获取设备IPFUN()

sleep(2000)


获取公司数据FUN()

var selectedNum = dialogs.singleChoice("请选择公司", companyNameList, 0)
toast("选择了第" + (selectedNum + 1) + "个选项")

var 选择的公司ID = companyIDList[selectedNum]
var 选择的公司名称 = companyNameList[selectedNum]

主体FUN()

